package FrameWork.Model;

import java.util.concurrent.Future;

/**
 * 战斗单位
 */
public class GFighter extends Entity {

    /**
     * 基本战斗属性
     */
    private int hp;
    private int mp;
    private int exp;
    private int gold;
    private int attack;
    private int defense;
    private int missRate;
    private int level;

    /**
     * 场景位置相关
     */
    private int sceneId;
    private int posX;
    private int posY;
    private int gridId;
    private int zone;

    /**
     * 战斗状态有关
     */
    private volatile boolean canAttack = true;  //是否在眩晕中
    private volatile boolean canCast = true;    //是否在沉默中

    private Future castingSkill;



    //攻击
    public void attack(GFighter target) {

    }

    //被攻击
    public void beAttacked(GFighter enemy) {

    }

    public int getHp() {
        return hp;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }

    public int getMp() {
        return mp;
    }

    public void setMp(int mp) {
        this.mp = mp;
    }

    public int getExp() {
        return exp;
    }

    public void setExp(int exp) {
        this.exp = exp;
    }

    public int getGold() {
        return gold;
    }

    public void setGold(int gold) {
        this.gold = gold;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }

    public int getDefense() {
        return defense;
    }

    public void setDefense(int defense) {
        this.defense = defense;
    }

    public int getMissRate() {
        return missRate;
    }

    public void setMissRate(int missRate) {
        this.missRate = missRate;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public int getSceneId() {
        return sceneId;
    }

    public void setSceneId(int sceneId) {
        this.sceneId = sceneId;
    }

    @Override
    public int getPosX() {
        return posX;
    }

    @Override
    public void setPosX(int posX) {
        this.posX = posX;
    }

    @Override
    public int getPosY() {
        return posY;
    }

    @Override
    public void setPosY(int posY) {
        this.posY = posY;
    }

    public int getGridId() {
        return gridId;
    }

    public void setGridId(int gridId) {
        this.gridId = gridId;
    }

    public int getZone() {
        return zone;
    }

    public void setZone(int zone) {
        this.zone = zone;
    }

    public boolean isCanAttack() {
        return canAttack;
    }

    public void setCanAttack(boolean canAttack) {
        this.canAttack = canAttack;
    }

    public boolean isCanCast() {
        return canCast;
    }

    public void setCanCast(boolean canCast) {
        this.canCast = canCast;
    }

    public Future getCastingSkill() {
        return castingSkill;
    }

    public void setCastingSkill(Future castingSkill) {
        this.castingSkill = castingSkill;
    }
}
